<?php namespace Common\Model;
use Hdphp\Model\Model;
class Arc extends Model{
	//指定表名		
	protected $table = 'article'; 
	//自动验证
	protected $validate=array(
		array('title','required','标题不能为空',3,3),
		array('category_cid','required','分类必须选择',3,3)
	);
	//自动完成
	protected $auto=array(
		//array(字段名,处理方法,方法类型,验证条件,处理时间);
		//发布时间
		array('sendtime','time','function',3,1),
		//修改时间
		array('updatetime','time','function',3,3),
		//用户id
		array('user_uid','getUid','method',3,1),
		//缩略图
		array('thumb','getThumb','method',3,3)
	);
	//缩略图
	public function getThumb(){
		//接收编辑页面隐藏域的旧图片的值
		$oldImg=Q('post.thumb');
		//如果没有上传图片，返回空字符串存入
		if($_FILES['thumb']['error']==4){
			//如果隐藏域有旧图片地址，说明是编辑
			if($oldImg){
				//直接返回旧图片地址
				return $oldImg;
			}
			return '';
		}
		//限制上传类型
		$files=Upload::type('jpg,jpeg,png,gif')->size(2000000)->make();
		//如果上传成功返回上传地址
		if($files){
			//如果用户在编辑和添加的时候有图片上传
			//如果oldImg有图片。说明是编辑，要删除旧图
			if($oldImg){
				//删除旧图及旧图缩略图
				unlink($oldImg);
				$path=str_replace('_thumb','',$oldImg);
				unlink($path);
			}
			//缩略图
			//处理缩略的文件名
			//str_replace($search, $replace, $subject)
            $newPath = str_replace('.' . $files[0]['ext'], '_thumb.' . $files[0]['ext'], $files[0]['path']);
			//缩略，返回缩略图的地址
            $thumbPath = Image::thumb($files[0]['path'],$newPath,700,335,1);
			return $thumbPath;
		}
		//如果上传失败，把错误类型压入当前模型的错误属性中，这样外部控制器可以用getError调用
		$this->error=Upload::getError();
	}
	//用户id
	public function getUid(){
		return $_SESSION['info']['uid'];
	}
	//添加文章
	public function store(){
		//自动验证
		//自动完成
		//先对所填的内容全部进行验证（*********************************）
		if(!$this->check()) return FALSE;
		//再对表进行添加（**************************************）
		//1.添加article标签
		$aid = $this->add();
		//2.添加article_data表
		$arcDataModel = new \Common\Model\ArcData;
		$arcDataModel->create();
		$arcDataModel->data['article_aid']=$aid;
		$arcDataModel->add();
		//3.添加article_tag中间表
		$arcTagModel=new \Common\Model\ArcTag;
		$arcTagModel->store($aid);
		return TRUE;
	}
		//编辑文章
	public function edit(){
		//1.先进行验证
		if(!$this->check()) return FALSE;
		//2.修改
		//(1)修改文章表
		$this->save();
		//(2)修改文章——标签中间表
		$arcTagModel=new \Common\Model\ArcTag;
		//接收隐藏域的aid
		$aid=Q('post.aid',0,'intval');
		//先删除，再添加
		$arcTagModel->where("article_aid={$aid}")->delete();
		$arcTagModel->store($aid);
		//(3)修改文章数据表
		$arcDataModel=new \Common\Model\ArcData;
		$arcDataModel->create();
		$arcDataModel->where("article_aid={$aid}")->save();
	   	return TRUE;
	}
	//验证2张表
	public function check(){
		//用creata方法进行自动验证：$this->data中有数据，触发自动验证自动完成
		if(!$this->create()) return FALSE;
		//判断$this->error有错误信息，则上传失败
		if($this->error) return FALSE;
		//验证article_data表
		$arcDataModel=new \Common\Model\ArcData;
		if(!$arcDataModel->create()){
			$this->error=$arcDataModel->getError();
			return FALSE;
		}
		return TRUE;
	}

}
 ?>